package pe.edu.upc.dsd.whereeat.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

import pe.edu.upc.dsd.whereeat.base.domain.BaseEntity;

@Entity
@XmlRootElement
@Table(name = "plato")
public class Plato extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 1L;
	public static final String TIPO_PLATO_ENTRADA = "ENTRADA";
	public static final String TIPO_PLATO_FONDO = "FONDO";
	public static final String TIPO_PLATO_POSTRE = "POSTRE";

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(unique = true, nullable = false)
	private int codigo;

	@Column
	private String descripcion;

	@Column
	private String estadoPlato;

	@Column
	private String tipoPlato;

	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaPublicacion;

	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaRegistro;

	@Column
	private String nombrePlato;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "codigoRestaurant", nullable = false)
	private Restaurant restaurant;

	public Plato() {
	}

	public Plato(Restaurant restaurant, String tipoPlato, String nombrePlato,
			String descripcion, Date fechaPublicacion, Date fechaRegistro,
			String estado) {
		this.restaurant = restaurant;
		this.tipoPlato = tipoPlato;
		this.nombrePlato = nombrePlato;
		this.descripcion = descripcion;
		this.fechaPublicacion = fechaPublicacion;
		this.fechaRegistro = fechaRegistro;
		this.estadoPlato = estado;
	}

    public Plato(int codigo,Restaurant restaurant,String tipoPlato,String nombrePlato,String descripcion,Date fechaPublicacion, Date fechaRegistro, String estado) {
    	this.codigo = codigo;
    	this.restaurant = restaurant;
    	this.tipoPlato = tipoPlato;
    	this.nombrePlato = nombrePlato;
    	this.descripcion = descripcion;
    	this.fechaPublicacion = fechaPublicacion;
    	this.fechaRegistro = fechaRegistro;
    	this.estadoPlato = estado;
    }
	
	public Plato(int codigo) {
		this.codigo = codigo;
	}

	public int getCodigo() {
		return this.codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getEstadoPlato() {
		return this.estadoPlato;
	}

	public void setEstadoPlato(String estadoPlato) {
		this.estadoPlato = estadoPlato;
	}

	public String getTipoPlato() {
		return tipoPlato;
	}

	public void setTipoPlato(String tipoPlato) {
		this.tipoPlato = tipoPlato;
	}

	public Date getFechaPublicacion() {
		return this.fechaPublicacion;
	}

	public void setFechaPublicacion(Date fechaPublicacion) {
		this.fechaPublicacion = fechaPublicacion;
	}

	public Date getFechaRegistro() {
		return this.fechaRegistro;
	}

	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public String getNombrePlato() {
		return this.nombrePlato;
	}

	public void setNombrePlato(String nombrePlato) {
		this.nombrePlato = nombrePlato;
	}

	public Restaurant getRestaurant() {
		return this.restaurant;
	}

	public void setRestaurant(Restaurant restaurant) {
		this.restaurant = restaurant;
	}

}